/* eslint-disable no-shadow */

/**
 * 获取城市下的区域数量
 * @param {object} search   查询参数
 * @returns 区域数量
 */
export function count({ search }) {
  return RSocket.rr({
    route: 'cbv.transfers.count',
    args: { search },
  });
}

/**
 * 获取城市下的区域列表
 * @param {string} cityId 城市Id
 * @param {object} args   查询和分页参数
 * @returns 区域列表
 */
export function search({ search, pg }) {
  return RSocket.rs({
    route: 'cbv.transfers',
    args: {
      search,
      pg,
    },
  });
}

/**
 * 获取城市或区域
 * @param {string} id 城市或区域Id
 * @returns 城市或区域
 */
export function get(id) {
  return RSocket.rr({
    route: `cbv.transfers.${id}`,
  });
}

/**
 * 修改城市或区域
 * @param {object} data 城市或区域
 * @returns 修改后的数据
 */
export function update(data) {
  return RSocket.rr({
    route: 'cbv.transfers.update',
    data,
  });
}

/**
 * 创建城市或区域
 * @param {*} data 城市或区域
 * @returns 创建后的城市或区域
 */
export function create(data) {
  return RSocket.rr({
    route: 'cbv.transfers.create',
    data,
  });
}

/**
 * 删除城市或区域
 * @param {string} id 城市或区域Id
 * @returns 删除的记录数
 */
export function remove(id) {
  return RSocket.rr({
    route: `cbv.transfers.${id}.delete`,
  });
}

/**
 * 查询订单数
 * @param {object} param0
 * @returns
 */
export function orderCount({ search }) {
  return RSocket.rr({
    route: 'ccorders.count',
    args: { search },
  });
}

/**
 * 查询订单
 * @param {object} param0
 * @returns
 */
export function orders({ search, pg }) {
  return RSocket.rr({
    route: 'ccorders.count',
    args: { search, pg },
  });
}

/**
 * 获取换乘站点
 */
export function transferStations(pageNo = 0) {
  return RSocket.rs({
    route: 'dicts.region.items',
    // route: 'app.dicts.region.list',
    args: {
      search: { extras: { 'transfer.value': true } },
      pg: { page: pageNo, size: 10, sort: ['fullId:asc'] },
    },
  });
}

/**
 * 获取存在的线路，用于查重
 * @param {{
    startMainArea: string,
    endMainArea: string,
    startMinorAreas: string[],
    endMinorAreas: string[],
    dockingStation: string,
  }} search 查询参数
 */
export function existingLines(search) {
  return RSocket.rs({
    route: 'cbv.transfers.uniqueness',
    args: { search },
  });
}

/**
 * 获取多段线路
 * @param {{
    startMainArea: string,
    endMainArea: string,
    startMinorAreas: string[],
    endMinorAreas: string[],
    dockingStation: string,
  }} search 查询参数
 * @returns 线路列表
 */
export function multiRoutes(data) {
  return RSocket.rr({
    route: 'cbv.transfers.splicing.line',
    data,
  });
}
